
//
//#include <iostream>
//#include <string>
//
//using namespace std;

#include "test.h"

template<class T>
void Swap(T& a, T& b)
{
    T tmp = a;
    a = b;
    b = tmp;
}

int main()
{
//    int a = 10, b = 20;
//    cout << a << ' ' << b << endl;
//    Swap(a, b);
//    cout << a << ' ' << b << endl;
//
//    char c = 'A', d = 'B';
//    cout << c << ' ' << d << endl;
//    Swap(c, d);
//    cout << c << ' ' << d << endl;
//
//    return 0;
//
    
    Stack<int> st;
    st.Push(1);
    st.Push(2);
    st.Push(3);
    st.Push(4);
    st.Push(5);
    st.Push(6);

    while (!st.Empty())
    {
        int top = st.Top();
        st.Pop();
        cout << top << ' ';
    }
    cout << endl;

    Stack<int> st1;
    st1.Push(100);
    st1.Push(200);
    st1.Push(300);
    st1.Push(400);
    st1.Push(500);
    st1.Push(600);

    Stack<int> st2(st1);
    Stack<int> st3;
    st3.Push(999);
    cout << st3.Top() << endl;
    st3 = st1;


    while (!st1.Empty())
    {
        int top = st1.Top();
        st1.Pop();
        cout << top << ' ';
    }
    cout << endl;


    while (!st2.Empty())
    {
        int top = st2.Top();
        st2.Pop();
        cout << top << ' ';
    }
    cout << endl;

    while (!st3.Empty())
    {
        int top = st3.Top();
        st3.Pop();
        cout << top << ' ';
    }
    cout << endl;

    Stack<int> sst(0);
    sst.Push(999);
    sst.Push(888);
    sst.Push(777);
    sst.Push(666);
    sst.Push(555);
    sst.Push(444);
    while (!sst.Empty())
    {
        int top = sst.Top();
        sst.Pop();
        cout << top << ' ';
    }
    cout << endl;

    return 0;

}
